////////////////////////////////////////////////////////////////////////////////////
/////////////////////         Entités nécéssaires       ////////////////////////////     
///////////////////// au fonctionnement de la stratégie ////////////////////////////
////////////////////////////////////////////////////////////////////////////////////

//Structure qui décrit un adversaire
	//-- évalué selon plusieurs critères.			|______Bareme______ |
	//-- proximité forte de l'adversaire avec mes cases	| +6 / case voisine |
	//-- nombre d'unités très importante			| +1 / unit	      |
	//-- nombre de centres controllés				| +10		      |
	//-- -

#define BAREME_PROX 4
#define BAREME_PROX_CENTER 6
#define BAREME_UNIT 1
#define BAREME_CENTER 10

typedef struct _SJ{
	int scoreUnit;
	int scoreCentre;
	int scoreProximite;
	int overall;
	struct _SJ* suivant;
}SJoueur;

//typedef SJoueur* SJoueurList; //QUESTION

typedef struct {
	SJoueur* playerList;
	unsigned int myTeamId;
	unsigned int nbTeams;
}SScoreTab;

// On privilègie l'opportunité
//	- Si pas de danger
//		- on s'allie et attaque
//	- sinon on le fuit
//		- par une alliance suivie d'une attaque
//		- par un déplacement tactique retrait/support
//
typedef struct _Neigh{
	unsigned int partenariat;
	unsigned int danger;
	unsigned int opportunite;
	
	unsigned int isUsed;//0 vide - 1 units présente
	unsigned int cellNumber;
	
	struct _Neigh* nextCell;
}Neighbourhood;

//Fonction de création | suppression d'un joueur
SJoueur* CreateJoueur();
void addJoueurToList(SJoueur**, SJoueur*);
SJoueur* getJoueurnumber(SScoreTab, unsigned int);// QUESTION : SSCORETAB (*)??

//Fonction de créations|Suppression du tableau des scores 
void CreateTabScore(SScoreTab*, unsigned int, unsigned int);
void afficheScoreTab(SScoreTab*);

//Suppression de la liste
void deleteScoreTab(SScoreTab*);